package sqlbean

type DataKind struct {
	Type      *int     `json:"type" xorm:"INT(11)"`      //数据类型 1开关量 2模拟量 3累计量
	Precision *int     `json:"precision" xorm:"INT(11)"` //小数位数
	Unit      *string  `json:"unit" xorm:"VARCHAR(256)"` //单位
	Max       *float64 `json:"max" xorm:"DOUBLE"`        //Y轴最大刻度
	Min       *float64 `json:"min" xorm:"DOUBLE"`        //Y轴最小刻度
	Interval  *float64 `json:"interval" xorm:"DOUBLE"`   //Y轴刻度
}

type Factory struct {
	Bean             `xorm:"extends"`
	Code     *string `json:"code" xorm:"index unique VARCHAR(256)"` // 厂站编码
	Group    *string `json:"group" xorm:"VARCHAR(256)"`             // 组织编码
	Name     *string `json:"name" xorm:"VARCHAR(256)"`              // 厂站名称
	Type     *int    `json:"type" xorm:"INT(11)"`                   // 厂站类型（1 原水 2 自来水 3 污水）
	Sname    *string `json:"sname" xorm:"VARCHAR(256)"`             // 简称
	Capacity *string `json:"capacity" xorm:"VARCHAR(256)"`          // 产能
	Status   *int    `json:"status" xorm:"INT(11)"`                 // 可用状态（0 未启用 1 在用）
	Address  *string `json:"address" xorm:"VARCHAR(256)"`           // 厂站地址
	Position *string `json:"position" xorm:"VARCHAR(256)"`          // 中心坐标
	Order    *int    `json:"order" xorm:"INT(11)"`                  // 排序
	Method   *int    `json:"method" xorm:"INT(11)"`                 // 计算方式（1 通用 2 同步BI）	GDH：用来表示哪些水厂要同步BI的月累积流量
	Subtype  *int    `json:"subtype" xorm:"INT(11)"`                // 子类型
	Zipcode  *string `json:"zipcode" xorm:"VARCHAR(256)"`           // 行政编码
	Parent   *string `json:"parent" xorm:"VARCHAR(256)"`            // 父水厂编码
}

type FactoryTemplate struct {
	Bean     `xorm:"extends"`
	DataKind `xorm:"extends"`

	Code         *string `json:"code" xorm:"VARCHAR(256)"`              //模板编码
	Ftype        *string `json:"ftype" xorm:"VARCHAR(256)"`             //厂站类型
	Subtype      *string `json:"subtype" xorm:"VARCHAR(256)"`           //子类型
	Process      *string `json:"process" xorm:"VARCHAR(256)"`           //工艺单元
	ProcessCode  *string `json:"process_code" xorm:"VARCHAR(256)"`      //工艺单元编码A
	Position     *string `json:"position" xorm:"VARCHAR(256)"`          //功能位置
	PositionCode *string `json:"position_code" xorm:"VARCHAR(256)"`     //功能位置编码 A A
	Monitor      *string `json:"monitor" xorm:"VARCHAR(256)"`           //监测对象
	MonitorCode  *string `json:"monitor_code" xorm:"VARCHAR(256)"`      //监测对象编码 A A A
	MonitorType  *int    `json:"monitor_type" xorm:"INT(11)"`           //监测对象类型 0 仪表 1 设备
	Sensor       *string `json:"sensor" xorm:"VARCHAR(256)"`            //采集项
	SensorCode   *string `json:"sensor_code" xorm:"index VARCHAR(256)"` //采集项编码 A
	Stype        *string `json:"stype" xorm:"VARCHAR(256)"`             //数据类型 暂留
	Source       *string `json:"source" xorm:"VARCHAR(256)"`            //采集项来源
	Required     *int    `json:"required" xorm:"INT(11)"`               //是否必选（0 非必选 1 必选）
	Status       *int    `json:"status" xorm:"INT(11)"`                 //可用状态（0 未启用 1 在用）
	Order        *int    `json:"order" xorm:"INT(11)"`                  //排序
}

type FactoryInfo struct {
	Bean `xorm:"extends"`

	Factory      *string  `json:"factory" xorm:"VARCHAR(256)"`      // 厂站编码
	Photos       *string  `json:"photos" xorm:"VARCHAR(600)"`       // 照片
	Desc         *string  `json:"desc" xorm:" VARCHAR(600)"`        // 描述
	Ptime        *string  `json:"ptime" xorm:"VARCHAR(256)"`        // 投产时间
	Area         *int     `json:"area" xorm:"INT(11)"`              // 占地面积
	ServicePop   *int     `json:"service_pop" xorm:"INT(11)"`       // 服务人口
	WaterSupply  *float64 `json:"water_supply" xorm:"DOUBLE"`       // 供水规模
	WaterProcess *float64 `json:"water_process" xorm:"DOUBLE"`      // 污水处理
	Pumps        *int     `json:"pumps" xorm:"INT(11)"`             // 泵组台数
	ServiceArea  *string  `json:"service_area" xorm:"VARCHAR(512)"` // 服务区域
}

type Fsensor struct {
	Bean `xorm:"extends"`

	Model      *string `json:"model" xorm:"index VARCHAR(256)"`       // 模版编码
	Code       *string `json:"code" xorm:"index unique VARCHAR(256)"` // 采集项编码
	Factory    *string `json:"factory" xorm:"VARCHAR(256)"`           // 厂站编码
	Process    *string `json:"process" xorm:"VARCHAR(256)"`           // 工艺单元
	Position   *string `json:"position" xorm:"VARCHAR(256)"`          // 位置编码
	Monitor    *string `json:"monitor" xorm:"VARCHAR(256)"`           // 测量点编码
	Stype      *string `json:"stype" xorm:"VARCHAR(256)"`             // 数据类型编码
	Name       *string `json:"name" xorm:"VARCHAR(256)"`              // 采集项名称
	Sname      *string `json:"sname" xorm:"VARCHAR(256)"`             // 简称
	Source     *int    `json:"source" xorm:"INT(11)"`                 // 数据来源 1 自动 2 人工 3 统计
	Confirm    *int    `json:"confirm" xorm:"INT(11)"`                // 是否需要人工确认 0 否 1 是
	Method     *string `json:"method" xorm:"VARCHAR(256)"`            // 采集方式 PLC/OPC/DB
	LocalTag   *string `json:"local_tag" xorm:"VARCHAR(256)"`         // 采集标签（现场OPC/PLC标签）
	Tag        *string `json:"tag" xorm:"VARCHAR(256)"`               // 统一标签（物联网平台）
	Io         *string `json:"io" xorm:"VARCHAR(256)"`                // I/O类型 AI/AO/DI/DO
	Signal     *string `json:"signal" xorm:"VARCHAR(256)"`            // 信号类型 【1 模拟 2 数字 3 脉冲】
	Precision  *int    `json:"precision" xorm:"INT(11)"`              // 显示小数位
	Unit       *string `json:"unit" xorm:"VARCHAR(256)"`              // 单位
	Status     *int    `json:"status" xorm:"INT(11)"`                 // 可用状态（-1 不可用 0 未启用 1 在用）
	Remark     *string `json:"remark" xorm:"VARCHAR(256)"`            // 备注
	Order      *int    `json:"order" xorm:"INT(11)"`                  // 排序字段
	Virtual    *int    `json:"virtual" xorm:"INT(11)"`
	Transform  *string `json:"transform" xorm:"VARCHAR(256)"`
	Expression *string `json:"expression" xorm:"VARCHAR(255)"`
}

type Fmonitor struct {
	Bean `xorm:"extends"`

	Model    *string `json:"model" xorm:"index VARCHAR(256)"`
	Code     *string `json:"code" xorm:"index unique VARCHAR(256)"` // 监测对象编码
	Factory  *string `json:"factory" xorm:"VARCHAR(256)"`           // 厂站编码
	Process  *string `json:"process" xorm:"VARCHAR(256)"`           // 工艺单元
	Position *string `json:"position" xorm:"VARCHAR(256)"`          // 功能位置
	Type     *int    `json:"type" xorm:"INT(11)"`                   // 监测对象类型 0 仪表 1 设备
	Name     *string `json:"name" xorm:"VARCHAR(256)"`              // 监测对象名称
	Sname    *string `json:"sname" xorm:"VARCHAR(256)"`             // 监测对象简称
	Sn       *string `json:"sn" xorm:"VARCHAR(256)"`                // 监测对象编号（1#、2#）
	Cyclic   *int    `json:"cyclic" xorm:"INT(11)"`                 // 采集频率（x 秒/次）
	Upload   *int    `json:"upload" xorm:"INT(11)"`                 // 上传频率（x 秒/次）
	Status   *int    `json:"status" xorm:"INT(11)"`                 // 可用状态（-1 不可用 0 未启用 1 在用）
	Remark   *string `json:"remark" xorm:"VARCHAR(256)"`            // 备注
	Order    *int    `json:"order" xorm:"INT(11)"`                  // 排序
}

type Trace struct {
	Bean `xorm:"extends"`

	Time      *int64   `json:"time" xorm:"INT(20)"`         //定位时间
	User      *string  `json:"user" xorm:"VARCHAR(256)"`    // 用户编码
	Latitude  *float64 `json:"latitude" xorm:"DOUBLE"`      // 纬度
	Longitude *float64 `json:"longitude" xorm:"DOUBLE"`     // 经度
	Accuracy  *float64 `json:"accuracy" xorm:"DOUBLE"`      // 精度信息
	Altitude  *float64 `json:"altitude" xorm:"DOUBLE"`      // 海拔高度信息
	Speed     *float64 `json:"speed" xorm:"DOUBLE"`         // 速度
	Bearing   *float64 `json:"bearing" xorm:"DOUBLE"`       // 方向信息
	Address   *string  `json:"address" xorm:"VARCHAR(256)"` // 地址
	Gps       *int     `json:"gps" xorm:"INT(11)"`          // GPS当前状态 	(0:卫星信号弱 -1:卫星状态未知	 1:卫星信号强)
	Type      *int     `json:"type" xorm:"INT(11)"`         // 定位结果来源 (1-GPS定位结果	2-前次定位结果	4 -缓存定位结果	5-Wifi定位结果	6-基站定位结果	8 -离线定位结果	9 -最后位置缓存)
	Error     *string  `json:"error" xorm:"VARCHAR(256)"`   // 异常信息
}

type TraceHistory struct {
	Bean `xorm:"extends"`

	Time      *int64   `json:"time" `                       //定位时间
	User      *string  `json:"user" xorm:"VARCHAR(256)"`    // 用户编码
	Latitude  *float64 `json:"latitude" xorm:"DOUBLE"`      // 纬度
	Longitude *float64 `json:"longitude" xorm:"DOUBLE"`     // 经度
	Accuracy  *float64 `json:"accuracy" xorm:"DOUBLE"`      // 精度信息
	Altitude  *float64 `json:"altitude" xorm:"DOUBLE"`      // 海拔高度信息
	Speed     *float64 `json:"speed" xorm:"DOUBLE"`         // 速度
	Bearing   *float64 `json:"bearing" xorm:"DOUBLE"`       // 方向信息
	Address   *string  `json:"address" xorm:"VARCHAR(256)"` // 地址
	Gps       *int     `json:"gps" xorm:"INT(11)"`          // GPS当前状态 	(0:卫星信号弱 -1:卫星状态未知	 1:卫星信号强)
	Type      *int     `json:"type" xorm:"INT(11)"`         // 定位结果来源 (1-GPS定位结果	2-前次定位结果	4 -缓存定位结果	5-Wifi定位结果	6-基站定位结果	8 -离线定位结果	9 -最后位置缓存)
	Error     *string  `json:"error" xorm:"VARCHAR(256)"`   // 异常信息
}

type YHDL_Result struct {
	YGID *string `json:"YGID" xorm:"VARCHAR(256)"` // 用户编码
	GH   *string `json:"GH" xorm:"VARCHAR(256)"`   // 用户编码
	YGXM *string `json:"YGXM" xorm:"VARCHAR(256)"` // 纬度
	YYQY *string `json:"YYQY" xorm:"VARCHAR(256)"` // 经度
}

func init() {
	RegisterTables(Trace{})
	RegisterTables(TraceHistory{})
}
